package com.roads.screen.service.impl;

import com.roads.screen.mapper.Screen4DataMapper;
import com.roads.screen.service.IScreen4DataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 可视化大屏4service实现
 *
 * @author nhp
 * @date 2024-10-09
 */
@Service
public class Screen4DataServiceImpl implements IScreen4DataService {

    @Autowired
    private Screen4DataMapper mapper;

    /**
     * 根据项目ID和用户查询标段或分部的工期集合-去重复
     * @param userName 用户
     * @param projectId 项目ID
     * @return 工期集合
     */
    @Override
    public List<String> selectBidPeriodsByUserAndProjectId(String userName, Integer projectId) {
        return mapper.selectBidPeriodsByUserAndProjectId(userName, projectId);
    }

    /**
     * 根据项目ID和用户查询标段或分部的工资日期集合年-月（去重复）
     * @param userName 用户
     * @param projectId 项目ID
     * @return 工资日期集合
     */
    @Override
    public List<String> selectSalaryDateByUserAndProjectId(String userName, Integer projectId) {
        return mapper.selectSalaryDateByUserAndProjectId(userName, projectId);
    }

    /**
     * 获取劳务工在场用户数量
     * 如果userName为空，则获取该项目的所有劳务工在场数量
     * 如果userName不为空，则获取该项目下用户所分配的项目标段的
     * @param userName 用户
     * @param projectId 项目ID
     * @return 数量
     */
    @Override
    public int getLabourStaffPresenceCount(String userName, Integer projectId) {
        return mapper.getLabourStaffPresenceCount(userName, projectId);
    }

    /**
     * 获取劳务工本月进场数量
     * 如果userName为空，则获取该项目的所有劳务工在场数量
     * 如果userName不为空，则获取该项目下用户所分配的项目标段的
     * @param userName 用户
     * @param projectId 项目ID
     * @return 数量
     */
    @Override
    public int getLabourStaffEnterCount(String userName, Integer projectId) {
        return mapper.getLabourStaffEnterCount(userName, projectId);
    }

    /**
     * 获取劳务工本月离场数量
     * 如果userName为空，则获取该项目的所有劳务工在场数量
     * 如果userName不为空，则获取该项目下用户所分配的项目标段的
     * @param userName 用户
     * @param projectId 项目ID
     * @return 数量
     */
    @Override
    public int getLabourStaffExitCount(String userName, Integer projectId) {
        return mapper.getLabourStaffExitCount(userName, projectId);
    }

    /**
     * 获取劳务工工种人数
     * 如果userName为空，则获取该项目的所有劳务工在场数量
     * 如果userName不为空，则获取该项目下用户所分配的项目标段的
     * @param userName 用户
     * @param projectId 项目ID
     * @return 工种数量
     */
    @Override
    public List<Map<String, Object>> getLabourStaffGroupPost(String userName, Integer projectId) {
        return mapper.getLabourStaffGroupPost(userName, projectId);
    }

    /**
     * 根据日期获取劳务工工资总和
     * 如果userName为空，则获取该项目的所有劳务工在场数量
     * 如果userName不为空，则获取该项目下用户所分配的项目标段的
     *
     * @param userName 用户
     * @param projectId 项目ID
     * @param salaryDate 日期
     * @return 工资总和
     */
    @Override
    public BigDecimal getLabourStaffSalaryBySalaryDateAndUserAndProjectId(String userName, Integer projectId, String salaryDate) {
        return mapper.getLabourStaffSalaryBySalaryDateAndUserAndProjectId(userName, projectId, salaryDate);
    }
}
